package cn.getech.data.development.dto;

import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;
import java.util.Map;

/**
 * <p>
 * 任务执行历史表
 * </p>
 *
 * @author zenith
 * @since 2018-08-27
 */
@Data
public class JobHistoryDto implements Serializable  {

    private static final long serialVersionUID = 1L;

    /**
     * 编号
     */
    private Integer id;
    /**
     * 运行编号
     */
    private Long num;
    /**
     * 运行参数
     */
    private String params;
    /**
     * 运行状态
     */
    private Integer state;
    /**
     * 运行耗时 单位ms
     */
    private Long cost;
    /**
     * 运行耗时 单位 s
     */
    private String costSecond;
    /**
     * 开始运行的时间
     */
    private Date beginTime;

    /**
     * 开始运行的时间
     */
    private Date endTime;
    /**
     * 任务节点信息编号
     */
    private Integer jobInfoId;

    /**
     * 运行状态
     */
    private String  stateName;

    /**
     * 任务节点关系
     */
    private String nodeParams;

    /**
     * 任务运行时对应oozieId
     */
    private String oozieJobId;

    /**
     * 任务运行日志
     */
    private String log;

    /**
     * 依赖运行时对应oozieId
     */
    private  String depOozieJobId;

    private Integer jobLogType;

    /**
     * 任务的运行状态
     */
    private String oozieStatus;

    /**
     * 重跑类型 0：正常全路线（正常）、1：当前节点、2：节点上游 、3：节点下游
     */
    private Integer reRunType;

    /**
     * 重跑类型 对应的节点id,如果是正常的则没有对应的节点id
     */
    private Integer reRunNodeId;

    /**
     * 最近一次运行的类型 -1：定时调度、-2：循环调度、id：手动操作的人id
     */
    private Integer runType;

    private String queueName;
    private String cronName;
    /***
     * 是否超时时间 0：未超时  1：超时
     */
    private Integer isOutHours;

    /***
     * 开始时间（系统参数的数据时间）
     */
    private String cronStartTime;

    /***
     * 结束时间（系统参数的数据时间）
     */
    private String cronEndTime;


    private String jobName;
    private String  projectName;

    private Long createPer;

    private String  createPerName;
    private String name;

    private Integer  lastRunType;

    public Integer getLastRunType() {
        //0：手动运行、1：定时调度、2：循环调度 3:cronTab调度
        if (runType != null) {
            lastRunType = runType > 0 ? 0 : (runType == -1 ? 1 : (runType == -3 ? 3 : 2));
        }else{
            lastRunType=0;
        }
        return lastRunType;
    }

    private Date time;


    /**
     * 开发任务中各个节点的运行状态
     */
    private Map<String,Integer> nodeStates;

    /**
     * 开发任务中各个节点的超时状态
     */
    private Map<String, Integer> nodeOutHours;

    /**
     * 菜单id
     */
    private Long workMenuId;

    private Integer procId;




    private Long jobDepId;
    private String depName;

    private Integer ollled;


}
